﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;

namespace QuanCafe
{
    public partial class frmHoaDonThanhToan : Form
    {

        #region Khởi tạo các biến

        // tạo biến service
        QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();


        #endregion


        #region Khai báo các delegate

        #endregion


        #region Xử lý ban đầu

        public frmHoaDonThanhToan()
        {
            InitializeComponent();
            // sử dụng lớp DataGridViewColumnSelector
            DataGridViewColumnSelector cs_PhieuDat = new DataGridViewColumnSelector(dgvDanhSachHoaDon);
            cs_PhieuDat.MaxHeight = 200;
            cs_PhieuDat.Width = 200;
        }

        // cho hiện 1 số thuộc tính ban đầu
        private void frmHoaDonThanhToan_Load(object sender, EventArgs e)
        {
            // load dữ liệu lên
            dgvDanhSachHoaDon.DataSource = ws.HD_LayDanhSachHoaDon();
            binding();
            rbtXoaMotHoaDon.Checked = true;
            rbtXoaMotHoaDon.Visible = false;
            rbtXoaNhieuHoaDon.Visible = false;
            btnOK.Visible = false;
            cbbSearch.SelectedIndex = 4;
            ChonCachSearch(true);
            // hiển thị thông tin thêm
            cbbNgay.SelectedIndex = int.Parse(DateTime.Now.Day.ToString());
            cbbThang.SelectedIndex = int.Parse(DateTime.Now.Month.ToString());
            cbbNam.SelectedIndex = int.Parse(DateTime.Now.Year.ToString()) - 2001;

        }

        #endregion


        #region Xử lý chính

        // viết hàm binding
        public void binding()
        {
            txtMaHoaDon.DataBindings.Clear();
            txtMaHoaDon.DataBindings.Add("Text",dgvDanhSachHoaDon.DataSource,"Mahoadon");
            txtNgayLap.DataBindings.Clear();
            txtNgayLap.DataBindings.Add("Text",dgvDanhSachHoaDon.DataSource,"Ngaylap");
            txtTongTien.DataBindings.Clear();
            txtTongTien.DataBindings.Add("Text",dgvDanhSachHoaDon.DataSource,"Tongtien");
        }

        // thực hiện việc xem phiếu
        private void btnXemPhieu_Click(object sender, EventArgs e)
        {
            rbtXoaMotHoaDon.Visible = false;
            rbtXoaNhieuHoaDon.Visible = false;
            // load dữ liệu lên
            dgvDanhSachHoaDon.DataSource = ws.HD_LayDanhSachHoaDon();
            binding();
        }

        // viết hàm để ẩn hay hiện các thuộc tính ở ô Search
        public void ChonCachSearch(bool search_thoigiancuthe)
        {
            if (search_thoigiancuthe == true)
            {
                // ẩn ô từ khóa đi
                txtTuKhoa.Visible = false;
                // hiện thời gian lên
                cbbSearch_Ngay.Visible = true;
                cbbSearch_Thang.Visible = true;
                cbbSearch_Nam.Visible = true;
                // hiện ngày tháng năm hiện tại
                cbbSearch_Ngay.SelectedIndex = int.Parse(DateTime.Now.Day.ToString()) ;
                cbbSearch_Thang.SelectedIndex = int.Parse(DateTime.Now.Month.ToString()) - 1;
                cbbSearch_Nam.SelectedIndex = int.Parse(DateTime.Now.Year.ToString()) - 2001;
            }
            else
            {
                // ẩn ô từ khóa đi
                txtTuKhoa.Visible = true;
                // hiện thời gian lên
                cbbSearch_Ngay.Visible = false;
                cbbSearch_Thang.Visible = false;
                cbbSearch_Nam.Visible = false;
            }
        }

        // thay đổi sự kiện chọn
        private void cbbSearch_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbSearch.SelectedIndex == 4)
            {
                ChonCachSearch(true);
            }
            else
            {
                ChonCachSearch(false);
            }
        }

        // xử lý việc tìm kiếm
        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (cbbSearch.SelectedIndex == 0) // tìm theo mã
            {
                dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoMa(txtTuKhoa.Text);
                binding();
            }
            else
            {
                if (cbbSearch.SelectedIndex == 1) // tìm theo ngày
                {
                    if (txtTuKhoa.Text.Length == 1) 
                    {
                        txtTuKhoa.Text = "0" + txtTuKhoa.Text;
                    }
                    dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoNgayLap(txtTuKhoa.Text);
                    binding();
                }
                else
                {
                    if (cbbSearch.SelectedIndex == 2) // tìm theo tháng
                    {
                        if (txtTuKhoa.Text.Length == 1)
                        {
                            txtTuKhoa.Text = "0" + txtTuKhoa.Text;
                        }
                        dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoThang(txtTuKhoa.Text);
                        binding();
                    }
                    else
                    {
                        if (cbbSearch.SelectedIndex == 3) // tìm theo năm
                        {
                            dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoNam(txtTuKhoa.Text);
                            binding();
                        }
                        else
                        {
                            if (cbbSearch.SelectedIndex == 4) // theo thời gian cụ thể
                            {
                                string s;
                                if (cbbSearch_Ngay.SelectedIndex == 0)
                                {
                                    s = cbbSearch_Thang.Text + "/" + cbbSearch_Nam.Text;
                                }
                                else
                                {
                                    s = cbbSearch_Ngay.Text + "/" + cbbSearch_Thang.Text + "/" + cbbSearch_Nam.Text;
                                }
                                dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoThoiGian(s);
                                binding();
                            }
                            else // tìm theo tổng tiền
                            {
                                float tongtien = float.Parse(txtTuKhoa.Text.ToString());
                                dgvDanhSachHoaDon.DataSource = ws.HD_TraHoaDonTheoTongTien(tongtien);
                                binding();
                            }
                        }
                    }
                }
            }
        }

        // xử lý thực hiện nút enter
        private void txtTuKhoa_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnSearch_Click(sender, e);
            }
        }

        // xử lý việc tính doanh thu
        private void btnXem_Click(object sender, EventArgs e)
        {
            string day;
            // kiểm tra việc chọn thời gian tính doanh thu
            if (cbbNgay.SelectedIndex == 0 && cbbThang.SelectedIndex == 0)
            {
                day = cbbNam.Text;
            }
            else
            {
                if (cbbNgay.SelectedIndex == 0)
                {
                    day = cbbThang.Text + "/" + cbbNam.Text;
                }
                else
                {
                    day = cbbNgay.Text + "/" + cbbThang.Text + "/" + cbbNam.Text;
                }
            }

            // lấy ra tổng hóa đơn
            txtTongHoaDon.Text = ws.HD_LayTongSoHoaDon(day).ToString();
            // lấy ra tổng số tiền
            txtTongSoTien.Text = ws.HD_TinhDoanhThuTheoThoiGian(day).ToString() + " Đồng";


        }

        // thực hiện việc chọn xóa
        private void btnXoa_Click(object sender, EventArgs e)
        {
            rbtXoaMotHoaDon.Visible = true;
            rbtXoaNhieuHoaDon.Visible = true;
            btnOK.Visible = true;
                
        }

        // thực hiện việc xóa
        private void btnOK_Click(object sender, EventArgs e)
        {

            try
            {
                // kiểm tra xem xóa kiểu nào
                if (rbtXoaMotHoaDon.Checked == true)
                {
                    // gọi hàm xóa
                    bool flag = ws.HD_XoaMotHoaDon(dgvDanhSachHoaDon.CurrentRow.Cells[1].Value.ToString());
                    if (flag == true)
                    {
                        // load lại danh sách
                        dgvDanhSachHoaDon.DataSource = ws.HD_LayDanhSachHoaDon();
                        binding();
                        // xuất thông báo
                        MessageBox.Show("Xóa thành công!", "Information!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        // xuất thông báo xóa thất bại
                        MessageBox.Show("Xóa thất bại!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    //xóa nhiều hóa đơn
                    // xóa từng dòng trong dridview
                    for (int i = 0; i < dgvDanhSachHoaDon.Rows.Count; i++)
                    {
                        // xóa từng dòng
                        ws.HD_XoaMotHoaDon(dgvDanhSachHoaDon.Rows[i].Cells[1].Value.ToString());
                        // xuất thông báo
                        MessageBox.Show("Xóa thành công!", "Information!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                rbtXoaMotHoaDon.Visible = false;
                rbtXoaNhieuHoaDon.Visible = false;
                btnOK.Visible = false;
            }
            catch (Exception x)
            {
                // xuất thông báo lỗi
                MessageBox.Show("Đã có lỗi xảy ra: " + x);
            }

        }

        #endregion

        private void ttpInfo_Draw(object sender, DrawToolTipEventArgs e)
        {
            e.DrawBackground();
            e.DrawText();
        }


       


        #region Xử lý với thread

        #endregion


        


       

    }
}
